#include "mycameraabs.h"

MyCameraABS::MyCameraABS(QObject *parent): QAbstractVideoSurface(parent)
{

}

bool MyCameraABS::present(const QVideoFrame &frame)
{
    QVideoFrame fm = frame;
    fm.map(QAbstractVideoBuffer::ReadOnly);
    //摄像头拍摄到的图片，以 QVideoFrame的类型进来的
    //而QLabel能够显示的图片类型是 QPixmap类型

    // QT中一个万能的图片类型中转类，QImage,因为QImage构造函数，只需要提供图片的首地址，宽度，高度，每行字节数，图片格式，即可构建，而这些数据，不管走到哪里使用哪个图片类型，几乎都会提供
    QImage image(fm.bits(),fm.width(),fm.height(),fm.bytesPerLine(),QImage::Format_RGB32);
    image = image.mirrored(1);
    QPixmap pic = QPixmap::fromImage(image);

    emit camera_signal(pic);
    return true;
}

QList<QVideoFrame::PixelFormat> MyCameraABS::supportedPixelFormats(QAbstractVideoBuffer::HandleType type) const
{
    QList<QVideoFrame::PixelFormat> list;
    list << QVideoFrame::Format_RGB32;
    return list;
}
